package scerbak.parser.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.xtext.parsetree.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.eclipse.xtext.conversion.ValueConverterException;
import scerbak.services.DatamodelGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalDatamodelParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_UPID", "RULE_EMPTY", "RULE_CHAR", "RULE_UPCHAR", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "':'", "'-'", "','", "'('", "')'", "'/'", "'import'", "'.'", "'.*'"
    };
    public static final int RULE_EMPTY=6;
    public static final int RULE_ID=4;
    public static final int RULE_STRING=10;
    public static final int RULE_UPCHAR=8;
    public static final int RULE_ANY_OTHER=14;
    public static final int RULE_UPID=5;
    public static final int RULE_INT=9;
    public static final int RULE_CHAR=7;
    public static final int RULE_WS=13;
    public static final int RULE_SL_COMMENT=12;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=11;

        public InternalDatamodelParser(TokenStream input) {
            super(input);
        }
        

    public String[] getTokenNames() { return tokenNames; }
    public String getGrammarFileName() { return "../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g"; }



     	private DatamodelGrammarAccess grammarAccess;
     	
        public InternalDatamodelParser(TokenStream input, IAstFactory factory, DatamodelGrammarAccess grammarAccess) {
            this(input);
            this.factory = factory;
            registerRules(grammarAccess.getGrammar());
            this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected InputStream getTokenFile() {
        	ClassLoader classLoader = getClass().getClassLoader();
        	return classLoader.getResourceAsStream("scerbak/parser/antlr/internal/InternalDatamodel.tokens");
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Model";	
       	}
       	
       	@Override
       	protected DatamodelGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start entryRuleModel
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:77:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
    public final EObject entryRuleModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModel = null;


        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:78:2: (iv_ruleModel= ruleModel EOF )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:79:2: iv_ruleModel= ruleModel EOF
            {
             currentNode = createCompositeNode(grammarAccess.getModelRule(), currentNode); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel75);
            iv_ruleModel=ruleModel();
            _fsp--;

             current =iv_ruleModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleModel


    // $ANTLR start ruleModel
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:86:1: ruleModel returns [EObject current=null] : ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) ) ;
    public final EObject ruleModel() throws RecognitionException {
        EObject current = null;

        EObject lv_imports_0_0 = null;

        EObject lv_package_1_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:91:6: ( ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:92:1: ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) )
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:92:1: ( ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:92:2: ( (lv_imports_0_0= ruleImport ) )* ( (lv_package_1_0= rulePackage ) )
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:92:2: ( (lv_imports_0_0= ruleImport ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==22) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:93:1: (lv_imports_0_0= ruleImport )
            	    {
            	    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:93:1: (lv_imports_0_0= ruleImport )
            	    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:94:3: lv_imports_0_0= ruleImport
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getModelAccess().getImportsImportParserRuleCall_0_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleImport_in_ruleModel131);
            	    lv_imports_0_0=ruleImport();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getModelRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		add(
            	    	       			current, 
            	    	       			"imports",
            	    	        		lv_imports_0_0, 
            	    	        		"Import", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:116:3: ( (lv_package_1_0= rulePackage ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:117:1: (lv_package_1_0= rulePackage )
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:117:1: (lv_package_1_0= rulePackage )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:118:3: lv_package_1_0= rulePackage
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getModelAccess().getPackagePackageParserRuleCall_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_rulePackage_in_ruleModel153);
            lv_package_1_0=rulePackage();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getModelRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"package",
            	        		lv_package_1_0, 
            	        		"Package", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleModel


    // $ANTLR start entryRulePackage
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:148:1: entryRulePackage returns [EObject current=null] : iv_rulePackage= rulePackage EOF ;
    public final EObject entryRulePackage() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackage = null;


        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:149:2: (iv_rulePackage= rulePackage EOF )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:150:2: iv_rulePackage= rulePackage EOF
            {
             currentNode = createCompositeNode(grammarAccess.getPackageRule(), currentNode); 
            pushFollow(FOLLOW_rulePackage_in_entryRulePackage189);
            iv_rulePackage=rulePackage();
            _fsp--;

             current =iv_rulePackage; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackage199); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePackage


    // $ANTLR start rulePackage
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:157:1: rulePackage returns [EObject current=null] : ( 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ':' ( (lv_data_3_0= ruleData ) )+ ) ;
    public final EObject rulePackage() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_name_1_0 = null;

        EObject lv_data_3_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:162:6: ( ( 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ':' ( (lv_data_3_0= ruleData ) )+ ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:163:1: ( 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ':' ( (lv_data_3_0= ruleData ) )+ )
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:163:1: ( 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ':' ( (lv_data_3_0= ruleData ) )+ )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:163:3: 'package' ( (lv_name_1_0= ruleQualifiedName ) ) ':' ( (lv_data_3_0= ruleData ) )+
            {
            match(input,15,FOLLOW_15_in_rulePackage234); 

                    createLeafNode(grammarAccess.getPackageAccess().getPackageKeyword_0(), null); 
                
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:167:1: ( (lv_name_1_0= ruleQualifiedName ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:168:1: (lv_name_1_0= ruleQualifiedName )
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:168:1: (lv_name_1_0= ruleQualifiedName )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:169:3: lv_name_1_0= ruleQualifiedName
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getPackageAccess().getNameQualifiedNameParserRuleCall_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_rulePackage255);
            lv_name_1_0=ruleQualifiedName();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getPackageRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"name",
            	        		lv_name_1_0, 
            	        		"QualifiedName", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,16,FOLLOW_16_in_rulePackage265); 

                    createLeafNode(grammarAccess.getPackageAccess().getColonKeyword_2(), null); 
                
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:195:1: ( (lv_data_3_0= ruleData ) )+
            int cnt2=0;
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==RULE_UPID) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:196:1: (lv_data_3_0= ruleData )
            	    {
            	    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:196:1: (lv_data_3_0= ruleData )
            	    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:197:3: lv_data_3_0= ruleData
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getPackageAccess().getDataDataParserRuleCall_3_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleData_in_rulePackage286);
            	    lv_data_3_0=ruleData();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getPackageRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		add(
            	    	       			current, 
            	    	       			"data",
            	    	        		lv_data_3_0, 
            	    	        		"Data", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt2 >= 1 ) break loop2;
                        EarlyExitException eee =
                            new EarlyExitException(2, input);
                        throw eee;
                }
                cnt2++;
            } while (true);


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePackage


    // $ANTLR start entryRuleData
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:227:1: entryRuleData returns [EObject current=null] : iv_ruleData= ruleData EOF ;
    public final EObject entryRuleData() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleData = null;


        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:228:2: (iv_ruleData= ruleData EOF )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:229:2: iv_ruleData= ruleData EOF
            {
             currentNode = createCompositeNode(grammarAccess.getDataRule(), currentNode); 
            pushFollow(FOLLOW_ruleData_in_entryRuleData323);
            iv_ruleData=ruleData();
            _fsp--;

             current =iv_ruleData; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleData333); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleData


    // $ANTLR start ruleData
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:236:1: ruleData returns [EObject current=null] : ( ( (lv_name_0_0= ruleNAME ) ) ( '-' ( (lv_description_2_0= rulePlainText ) ) )? ) ;
    public final EObject ruleData() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_name_0_0 = null;

        AntlrDatatypeRuleToken lv_description_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:241:6: ( ( ( (lv_name_0_0= ruleNAME ) ) ( '-' ( (lv_description_2_0= rulePlainText ) ) )? ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:242:1: ( ( (lv_name_0_0= ruleNAME ) ) ( '-' ( (lv_description_2_0= rulePlainText ) ) )? )
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:242:1: ( ( (lv_name_0_0= ruleNAME ) ) ( '-' ( (lv_description_2_0= rulePlainText ) ) )? )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:242:2: ( (lv_name_0_0= ruleNAME ) ) ( '-' ( (lv_description_2_0= rulePlainText ) ) )?
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:242:2: ( (lv_name_0_0= ruleNAME ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:243:1: (lv_name_0_0= ruleNAME )
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:243:1: (lv_name_0_0= ruleNAME )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:244:3: lv_name_0_0= ruleNAME
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getDataAccess().getNameNAMEParserRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleNAME_in_ruleData379);
            lv_name_0_0=ruleNAME();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getDataRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"name",
            	        		lv_name_0_0, 
            	        		"NAME", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:266:2: ( '-' ( (lv_description_2_0= rulePlainText ) ) )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==17) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:266:4: '-' ( (lv_description_2_0= rulePlainText ) )
                    {
                    match(input,17,FOLLOW_17_in_ruleData390); 

                            createLeafNode(grammarAccess.getDataAccess().getHyphenMinusKeyword_1_0(), null); 
                        
                    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:270:1: ( (lv_description_2_0= rulePlainText ) )
                    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:271:1: (lv_description_2_0= rulePlainText )
                    {
                    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:271:1: (lv_description_2_0= rulePlainText )
                    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:272:3: lv_description_2_0= rulePlainText
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getDataAccess().getDescriptionPlainTextParserRuleCall_1_1_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_rulePlainText_in_ruleData411);
                    lv_description_2_0=rulePlainText();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getDataRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        try {
                    	       		set(
                    	       			current, 
                    	       			"description",
                    	        		lv_description_2_0, 
                    	        		"PlainText", 
                    	        		currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleData


    // $ANTLR start entryRulePlainText
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:304:1: entryRulePlainText returns [String current=null] : iv_rulePlainText= rulePlainText EOF ;
    public final String entryRulePlainText() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_rulePlainText = null;


        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:305:2: (iv_rulePlainText= rulePlainText EOF )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:306:2: iv_rulePlainText= rulePlainText EOF
            {
             currentNode = createCompositeNode(grammarAccess.getPlainTextRule(), currentNode); 
            pushFollow(FOLLOW_rulePlainText_in_entryRulePlainText452);
            iv_rulePlainText=rulePlainText();
            _fsp--;

             current =iv_rulePlainText.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRulePlainText463); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRulePlainText


    // $ANTLR start rulePlainText
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:313:1: rulePlainText returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* ) ;
    public final AntlrDatatypeRuleToken rulePlainText() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token this_ID_1=null;
        Token kw=null;

         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:318:6: ( (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:319:1: (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* )
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:319:1: (this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )* )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:319:6: this_ID_0= RULE_ID (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )*
            {
            this_ID_0=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePlainText503); 

            		current.merge(this_ID_0);
                
             
                createLeafNode(grammarAccess.getPlainTextAccess().getIDTerminalRuleCall_0(), null); 
                
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:326:1: (this_ID_1= RULE_ID | kw= ',' | kw= '(' | kw= ')' | kw= '/' )*
            loop4:
            do {
                int alt4=6;
                switch ( input.LA(1) ) {
                case RULE_ID:
                    {
                    alt4=1;
                    }
                    break;
                case 18:
                    {
                    alt4=2;
                    }
                    break;
                case 19:
                    {
                    alt4=3;
                    }
                    break;
                case 20:
                    {
                    alt4=4;
                    }
                    break;
                case 21:
                    {
                    alt4=5;
                    }
                    break;

                }

                switch (alt4) {
            	case 1 :
            	    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:326:6: this_ID_1= RULE_ID
            	    {
            	    this_ID_1=(Token)input.LT(1);
            	    match(input,RULE_ID,FOLLOW_RULE_ID_in_rulePlainText524); 

            	    		current.merge(this_ID_1);
            	        
            	     
            	        createLeafNode(grammarAccess.getPlainTextAccess().getIDTerminalRuleCall_1_0(), null); 
            	        

            	    }
            	    break;
            	case 2 :
            	    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:335:2: kw= ','
            	    {
            	    kw=(Token)input.LT(1);
            	    match(input,18,FOLLOW_18_in_rulePlainText548); 

            	            current.merge(kw);
            	            createLeafNode(grammarAccess.getPlainTextAccess().getCommaKeyword_1_1(), null); 
            	        

            	    }
            	    break;
            	case 3 :
            	    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:342:2: kw= '('
            	    {
            	    kw=(Token)input.LT(1);
            	    match(input,19,FOLLOW_19_in_rulePlainText567); 

            	            current.merge(kw);
            	            createLeafNode(grammarAccess.getPlainTextAccess().getLeftParenthesisKeyword_1_2(), null); 
            	        

            	    }
            	    break;
            	case 4 :
            	    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:349:2: kw= ')'
            	    {
            	    kw=(Token)input.LT(1);
            	    match(input,20,FOLLOW_20_in_rulePlainText586); 

            	            current.merge(kw);
            	            createLeafNode(grammarAccess.getPlainTextAccess().getRightParenthesisKeyword_1_3(), null); 
            	        

            	    }
            	    break;
            	case 5 :
            	    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:356:2: kw= '/'
            	    {
            	    kw=(Token)input.LT(1);
            	    match(input,21,FOLLOW_21_in_rulePlainText605); 

            	            current.merge(kw);
            	            createLeafNode(grammarAccess.getPlainTextAccess().getSolidusKeyword_1_4(), null); 
            	        

            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);


            }


            }

             resetLookahead(); 
            	    lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end rulePlainText


    // $ANTLR start entryRuleNAME
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:369:1: entryRuleNAME returns [String current=null] : iv_ruleNAME= ruleNAME EOF ;
    public final String entryRuleNAME() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleNAME = null;


        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:370:2: (iv_ruleNAME= ruleNAME EOF )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:371:2: iv_ruleNAME= ruleNAME EOF
            {
             currentNode = createCompositeNode(grammarAccess.getNAMERule(), currentNode); 
            pushFollow(FOLLOW_ruleNAME_in_entryRuleNAME648);
            iv_ruleNAME=ruleNAME();
            _fsp--;

             current =iv_ruleNAME.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNAME659); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleNAME


    // $ANTLR start ruleNAME
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:378:1: ruleNAME returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? ) ;
    public final AntlrDatatypeRuleToken ruleNAME() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_UPID_0=null;
        AntlrDatatypeRuleToken this_PlainText_1 = null;


         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:383:6: ( (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:384:1: (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? )
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:384:1: (this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )? )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:384:6: this_UPID_0= RULE_UPID (this_PlainText_1= rulePlainText )?
            {
            this_UPID_0=(Token)input.LT(1);
            match(input,RULE_UPID,FOLLOW_RULE_UPID_in_ruleNAME699); 

            		current.merge(this_UPID_0);
                
             
                createLeafNode(grammarAccess.getNAMEAccess().getUPIDTerminalRuleCall_0(), null); 
                
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:391:1: (this_PlainText_1= rulePlainText )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==RULE_ID) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:392:5: this_PlainText_1= rulePlainText
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getNAMEAccess().getPlainTextParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_rulePlainText_in_ruleNAME727);
                    this_PlainText_1=rulePlainText();
                    _fsp--;


                    		current.merge(this_PlainText_1);
                        
                     
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }


            }

             resetLookahead(); 
            	    lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleNAME


    // $ANTLR start entryRuleImport
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:410:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
    public final EObject entryRuleImport() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImport = null;


        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:411:2: (iv_ruleImport= ruleImport EOF )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:412:2: iv_ruleImport= ruleImport EOF
            {
             currentNode = createCompositeNode(grammarAccess.getImportRule(), currentNode); 
            pushFollow(FOLLOW_ruleImport_in_entryRuleImport774);
            iv_ruleImport=ruleImport();
            _fsp--;

             current =iv_ruleImport; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleImport784); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleImport


    // $ANTLR start ruleImport
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:419:1: ruleImport returns [EObject current=null] : ( 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) ) ;
    public final EObject ruleImport() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:424:6: ( ( 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:425:1: ( 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) )
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:425:1: ( 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:425:3: 'import' ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) )
            {
            match(input,22,FOLLOW_22_in_ruleImport819); 

                    createLeafNode(grammarAccess.getImportAccess().getImportKeyword_0(), null); 
                
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:429:1: ( (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:430:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard )
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:430:1: (lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:431:3: lv_importedNamespace_1_0= ruleQualifiedNameWithWildcard
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleQualifiedNameWithWildcard_in_ruleImport840);
            lv_importedNamespace_1_0=ruleQualifiedNameWithWildcard();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getImportRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"importedNamespace",
            	        		lv_importedNamespace_1_0, 
            	        		"QualifiedNameWithWildcard", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleImport


    // $ANTLR start entryRuleQualifiedName
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:461:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:462:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:463:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
             currentNode = createCompositeNode(grammarAccess.getQualifiedNameRule(), currentNode); 
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName877);
            iv_ruleQualifiedName=ruleQualifiedName();
            _fsp--;

             current =iv_ruleQualifiedName.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName888); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleQualifiedName


    // $ANTLR start ruleQualifiedName
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:470:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:475:6: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:476:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:476:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:476:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName928); 

            		current.merge(this_ID_0);
                
             
                createLeafNode(grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0(), null); 
                
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:483:1: (kw= '.' this_ID_2= RULE_ID )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==23) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:484:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)input.LT(1);
            	    match(input,23,FOLLOW_23_in_ruleQualifiedName947); 

            	            current.merge(kw);
            	            createLeafNode(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0(), null); 
            	        
            	    this_ID_2=(Token)input.LT(1);
            	    match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName962); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        createLeafNode(grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1(), null); 
            	        

            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);


            }


            }

             resetLookahead(); 
            	    lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleQualifiedName


    // $ANTLR start entryRuleQualifiedNameWithWildcard
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:504:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
    public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildcard = null;


        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:505:2: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:506:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
            {
             currentNode = createCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule(), currentNode); 
            pushFollow(FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard1010);
            iv_ruleQualifiedNameWithWildcard=ruleQualifiedNameWithWildcard();
            _fsp--;

             current =iv_ruleQualifiedNameWithWildcard.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard1021); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleQualifiedNameWithWildcard


    // $ANTLR start ruleQualifiedNameWithWildcard
    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:513:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_QualifiedName_0 = null;


         setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:518:6: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? ) )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:519:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            {
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:519:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.*' )? )
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:520:5: this_QualifiedName_0= ruleQualifiedName (kw= '.*' )?
            {
             
                    currentNode=createCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0(), currentNode); 
                
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildcard1068);
            this_QualifiedName_0=ruleQualifiedName();
            _fsp--;


            		current.merge(this_QualifiedName_0);
                
             
                    currentNode = currentNode.getParent();
                
            // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:530:1: (kw= '.*' )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==24) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../scerbak.datamodel/src-gen/scerbak/parser/antlr/internal/InternalDatamodel.g:531:2: kw= '.*'
                    {
                    kw=(Token)input.LT(1);
                    match(input,24,FOLLOW_24_in_ruleQualifiedNameWithWildcard1087); 

                            current.merge(kw);
                            createLeafNode(grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopAsteriskKeyword_1(), null); 
                        

                    }
                    break;

            }


            }


            }

             resetLookahead(); 
            	    lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleQualifiedNameWithWildcard


 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_ruleModel131 = new BitSet(new long[]{0x0000000000408000L});
    public static final BitSet FOLLOW_rulePackage_in_ruleModel153 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackage_in_entryRulePackage189 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackage199 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_rulePackage234 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_rulePackage255 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_rulePackage265 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleData_in_rulePackage286 = new BitSet(new long[]{0x0000000000000022L});
    public static final BitSet FOLLOW_ruleData_in_entryRuleData323 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleData333 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNAME_in_ruleData379 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_17_in_ruleData390 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleData411 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlainText_in_entryRulePlainText452 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePlainText463 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePlainText503 = new BitSet(new long[]{0x00000000003C0012L});
    public static final BitSet FOLLOW_RULE_ID_in_rulePlainText524 = new BitSet(new long[]{0x00000000003C0012L});
    public static final BitSet FOLLOW_18_in_rulePlainText548 = new BitSet(new long[]{0x00000000003C0012L});
    public static final BitSet FOLLOW_19_in_rulePlainText567 = new BitSet(new long[]{0x00000000003C0012L});
    public static final BitSet FOLLOW_20_in_rulePlainText586 = new BitSet(new long[]{0x00000000003C0012L});
    public static final BitSet FOLLOW_21_in_rulePlainText605 = new BitSet(new long[]{0x00000000003C0012L});
    public static final BitSet FOLLOW_ruleNAME_in_entryRuleNAME648 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNAME659 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_UPID_in_ruleNAME699 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_rulePlainText_in_ruleNAME727 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport774 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImport784 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleImport819 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_ruleImport840 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName877 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName888 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName928 = new BitSet(new long[]{0x0000000000800002L});
    public static final BitSet FOLLOW_23_in_ruleQualifiedName947 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName962 = new BitSet(new long[]{0x0000000000800002L});
    public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard1010 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard1021 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildcard1068 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_24_in_ruleQualifiedNameWithWildcard1087 = new BitSet(new long[]{0x0000000000000002L});

}